package KnowSparkSQL.DSL.DuplicateRemoval;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

/**
 * 作用：根据指定字段进行删除重复行。
 * 和distinct()的区别是：distinct()将所有字段都相同的行认为是重复行，
 * 而dropDuplicates(xxx)则是将指定字段都相同的行认为是重复行。
 * 参数：可以不传递参数，
 * 那么作用和distinct()一样。
 * 也可以传递一个字符串数组。这个数组的元素就是字段名。
 * 返回值：Dataset<Row>类型的对象
 */
public class DropDuplicates {
    public static void main(String[] args) {
        SparkSession sparkSession = SparkSession.builder().appName(DropDuplicates.class.getName()).master("local").getOrCreate();

        Dataset<Row> json = sparkSession.read().json("./data/student1.json");


//        json.dropDuplicates(new String[]{"name","age"}).show();
        json.dropDuplicates("name").show();

    }
}
